package com.atguigu.vip.spring.framework.beans.support;

import com.atguigu.vip.spring.framework.beans.config.GPBeanDefinition;
import com.atguigu.vip.spring.framework.context.support.GPAbstractApplicationContext;
import com.atguigu.vip.spring.framework.core.GPBeanFactory;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 *
 * 做一个默认的IOC容器初始化实现，放在support包下，spring里面support是扩展的意思。
 *
 * 默认IOC容器是放在 GPDefaultListableBeanFactory 这里的
 *
 * 不管是annotation容器还是xml容器，还是其他各种容器， 他们在初始化之前必然是有一些公共逻辑。
 * 如果没办法去识别容器，那就可以使用默认的 GPDefaultListableBeanFactory 去做一个简单的容器初始化。默认实现。
 * 所以IOC容器才会放在这里。
 * 其他的容器可以扩展，但是这个是默认的实现。
 *
 *
 * @Author: JLL
 * @Date: 2019/5/3 16:40
 */
public class GPDefaultListableBeanFactory  extends GPAbstractApplicationContext implements GPBeanFactory {

    @Override
    public Object getBean(String beanName) throws Exception {
        return null;
    }

    @Override
    public Object getBean(Class<?> beanClass) throws Exception {
        return null;
    }

    //BeanDefinition是存储配置文件信息的  这是一个伪IOC容器。
    // 真正的IOC容器是保存beanWrapper的，真正的IOC容器是从getBean开始的
    /*private*/protected final Map<String, GPBeanDefinition> beanDefinitionMap = new ConcurrentHashMap(256);




}
